The invention relates to connectivity in the presence of barriers.
Connectivity between the public Internet and corporate or private home networks can be limited by the presence of firewalls or consumer gateways designed to provide protection of valuable resources on the network.
Corporations, for example, typically permit limited incoming access to servers on their internal networks through firewalls, such as an electronic mail (email) gateway or public web site. Outgoing access through firewalls is typically permitted for a few standard protocols such as HyperText Transfer Protocol (HTTP) and File Transfer Protocol (FTP) through a protocol-specific proxy. For example, corporate users can web browse on the Internet through an HTTP proxy. Applications based on alternative protocols, such as buddy lists or Internet Protocol (IP) telephony, may not be able to be employed because of the lack of a suitable firewall proxy. Some applications take advantage of ubiquitously deployed proxies (e.g., an HTTP proxy) by using them to tunnel application data through a firewall. However, application-specific development must be provided to support tunneling.
Private home networks face similar connectivity issues. The industry is converging on a centralized access model for sharing Internet access among the personal computers (PCs) and devices in such networks. Centralized access is expected to be provided by consumer gateways based on Network Address Translation (NAT) which allows specific endpoints on the private home network to share outbound access to the Internet, but provides no general mechanism for inbound connections to a specific device on the network. A gateway can be configured manually to map incoming access at a specific network port to a single machine on the private home network. Alternatively, proxies can be installed on a gateway to handle access for a specific application or protocol in a much more flexible way than manually configured port mapping. However, because gateways can be implemented on a variety of operating system platforms, it may be difficult for application developers to provide proxies for each available system.